﻿/**********************************************************************
 * @file   FITKAcousticsVTKGraphObjectSEAJunctionPoints.h
 * @brief  SEA点连接复合渲染数据
 * @author BaGuijun (baguijun@163.com)
 * @date   2025-03-06
 *********************************************************************/
#ifndef _FITKAcousticsVTKGraphObjectSEAJunctionPoints_H
#define _FITKAcousticsVTKGraphObjectSEAJunctionPoints_H

#include "FITKAcousticsVTKGraphAdaptorAPI.h"
#include "FITKAcousticsVTKGraphObjectSEAJunctions.h"

namespace Acoustics {
    class FITKAcousticsDiscModel;
}

class vtkGlyph3D;
class vtkSphereSource;

namespace Exchange
{
    /**
     * @brief  SEA点连接复合渲染数据
     * @author BaGuijun (baguijun@163.com)
     * @date   2025-03-06
     */
    class FITKACOUSTICSGRAPHADAPTORAPI FITKAcousticsVTKGraphObjectSEAJunctionPoints : public FITKAcousticsVTKGraphObjectSEAJunctions
    {
        FITKGraphObjectRegist(FITKAcousticsVTKGraphObjectSEAJunctionPoints, FITKAcousticsVTKGraphObjectSEAJunctions);
        FITKCLASS(FITKAcousticsVTKGraphObjectSEAJunctionPoints, FITKAcousticsVTKGraphObjectSEAJunctions);
    public:
        /**
         * @brief    构造函数
         * @param[i] discModel                 声学模型
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-03-06
         */
        FITKAcousticsVTKGraphObjectSEAJunctionPoints(Acoustics::FITKAcousticsDiscModel* discModel);
        /**
         * @brief    析构函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-03-06
         */
        virtual ~FITKAcousticsVTKGraphObjectSEAJunctionPoints();
        /**
         * @brief    获取数据可见性
         * @return   bool                    可见性
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-03-06
         */
        bool getDataVisibility() override;
    protected:
        /**
         * @brief    初始化
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-03-06
         */
        void init() override;
        /**
         * @brief    生成数据
         * @return   bool                      是否成功
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-03-06
         */
        bool generateDataSet() override;
        /**
         * @brief    生成渲染数据
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-03-06
         */
        void generateGraph() override;
        /**
         * @brief    更新渲染大小
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-03-06
         */
        void updateGlyphSizeByRatio() override;
    protected:
        /**
         * @brief  默认渲染大小
         * @author BaGuijun (baguijun@163.com)
         * @date   2025-03-06
         */
        double m_glyphSize = 30.0;
        /**
         * @brief  模型生成器
         * @author BaGuijun (baguijun@163.com)
         * @date   2025-03-06
         */
        vtkGlyph3D* m_glyph = nullptr;
        /**
         * @brief  高亮模型生成器
         * @author BaGuijun (baguijun@163.com)
         * @date   2025-03-06
         */
        vtkGlyph3D* m_hightGlyph = nullptr;
        /**
         * @brief  模型原型
         * @author BaGuijun (baguijun@163.com)
         * @date   2025-03-06
         */
        vtkSphereSource* m_sphereSource = nullptr;
        /**
         * @brief  高亮模型原型
         * @author BaGuijun (baguijun@163.com)
         * @date   2025-03-06
         */
        vtkSphereSource* m_HightSphereSource = nullptr;
    };
}

#endif